package com.yyk.yykywd.config;

import android.app.Activity;
import android.app.Application;
import android.content.Context;


import androidx.multidex.MultiDex;

import com.orhanobut.hawk.Hawk;
import com.orhanobut.logger.AndroidLogAdapter;
import com.orhanobut.logger.FormatStrategy;
import com.orhanobut.logger.Logger;
import com.orhanobut.logger.PrettyFormatStrategy;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;
import com.scwang.smartrefresh.layout.api.DefaultRefreshFooterCreator;
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
import com.scwang.smartrefresh.layout.api.RefreshFooter;
import com.scwang.smartrefresh.layout.api.RefreshHeader;
import com.scwang.smartrefresh.layout.api.RefreshLayout;
import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
import com.scwang.smartrefresh.layout.header.ClassicsHeader;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.yyk.yykywd.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2018/9/17 0017.
 * <p>
 * <p>
 * 1. 如果你在 manifest 中把一个 activity 设置成 android:windowSoftInputMode="adjustResize"，那么 ScrollView（或者其它可伸缩的 ViewGroups）会缩小
 * ，从而为软键盘腾出空间。但是，如果你在 activity 的主题中设置了 android:windowFullscreen="true"，那么 ScrollView 不会缩小
 * 。这是因为该属性强制 ScrollView 全屏显示。然而在主题中设置 android:fitsSystemWindows="false" 也会导致 adjustResize 不起作用；
 */

public class MyApplication extends Application {
    private static MyApplication myApplication;
    private Context applicationContext;
    private List<Activity> list;
    private static final String TAG = "APPLOG";

    public String getDid() {
        return Hawk.get("did") + "";
    }

    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
        myApplication = this;
        applicationContext = this;
        list = new ArrayList<>();
        initHawk();
        initLogger(TAG);
        initWeixin();


    }

    private void initWeixin() {
        // 三个参数分别是上下文、应用的appId、是否检查签名（默认为false）
        IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, "wx9b11db1afb32aaae", true);
// 注册
        mWxApi.registerApp("wx9b11db1afb32aaae");

    }


    public static MyApplication getInstance() {
        return myApplication;
    }

    public void addActivity(Activity activity) {
        if (!list.contains(activity)) {
            list.add(activity);
        }
    }

    public void removeActivity(Activity activity) {
        if (list.contains(activity)) {
            list.remove(activity);
        }
    }

    public void destroyActivity() {
        for (Activity activity : list) {
            if (list.contains(activity)) {
                list.remove(activity);
                activity.finish();
            }
        }
    }

    /**
     * 初始化 Sp存储
     */
    private void initHawk() {
        Hawk.init(this).build();
    }


    /**
     * 初始化Logger
     *
     * @param tag
     */
    private void initLogger(String tag) {
        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
                .showThreadInfo(false)  // 是否显示线程信息，默认 显示
                .methodCount(0)         // 方法栈打印的个数，默认是 2
                .methodOffset(7)        // 设置调用堆栈的函数偏移值，默认是 5
                .logStrategy(null) // 设置log打印策略，默认是 LogCat
                .tag(tag)   // 设置全局TAG，默认是 PRETTY_LOGGER
                .build();
        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy) {
            @Override
            public boolean isLoggable(int priority, String tag) {
                return true;
            }
        });


    }

    //static 代码段可以防止内存泄露
    static {
        //设置全局的Header构建器
        SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
            @Override
            public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
                layout.setPrimaryColorsId(R.color.white, android.R.color.black);//全局设置主题颜色
                layout.setDisableContentWhenRefresh(false);//是否在刷新的时候禁止列表的操作
                layout.setDragRate(0.5f);//显示下拉高度/手指真实下拉高度=阻尼效果
                layout.setReboundDuration(300);//回弹动画时长（毫秒）

                layout.finishRefresh(500);//延迟3000毫秒后结束刷新
                return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header，默认是 贝塞尔雷达Header
            }
        });
        //设置全局的Footer构建器
        SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
            @Override
            public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
                //指定为经典Footer，默认是 BallPulseFooter
                return new ClassicsFooter(context).setDrawableSize(20);
            }
        });
    }


}
